// 任务日志控制器
import taskLogService from '../services/taskLogService.js';

/**
 * 创建任务日志控制器
 * 处理创建新任务日志的请求
 * @param {Object} request - Fastify请求对象，包含任务ID和日志内容
 * @param {Object} reply - Fastify响应对象
 * @returns {Object} 创建结果响应
 */
async function createTaskLogHandler(request, reply) {
  try {
    const { taskId } = request.params;  // 从参数中获取任务ID，而不是从body中获取
    const { content } = request.body;   // 从body中获取内容
    // 从request.user.userId获取用户ID（与其他控制器保持一致）
    const userId = request.user.userId;
    
    // 验证输入参数
    if (!userId) {
      throw new Error('用户ID是必需的');
    }
    
    if (!taskId) {
      throw new Error('任务ID是必需的');
    }
    
    if (!content) {
      throw new Error('内容是必需的');
    }
    
    const taskLog = await taskLogService.createTaskLog(userId, taskId, content);
    return reply.code(201).send({
      code: 0,
      success: true,
      message: '任务日志创建成功',
      data: taskLog
    });
  } catch (error) {
    console.error('创建任务日志处理器中发生错误:', error.message);
    return reply.code(400).send({
      code: 10001,
      success: false,
      message: error.message,
      data: {}
    });
  }
}

/**
 * 获取任务日志列表控制器
 * 处理获取任务日志列表的请求
 * @param {Object} request - Fastify请求对象，包含任务ID参数
 * @param {Object} reply - Fastify响应对象
 * @returns {Object} 任务日志列表响应
 */
async function getTaskLogsHandler(request, reply) {
  try {
    const { taskId } = request.params;
    // 从request.user.userId获取用户ID（与其他控制器保持一致）
    const userId = request.user.userId;
    
    // 验证输入参数
    if (!userId) {
      throw new Error('用户ID是必需的');
    }
    
    if (!taskId) {
      throw new Error('任务ID是必需的');
    }
    
    const taskLogs = await taskLogService.getTaskLogs(userId, taskId);
    return reply.code(200).send({
      code: 0,
      success: true,
      message: '任务日志获取成功',
      data: taskLogs
    });
  } catch (error) {
    console.error('获取任务日志处理器中发生错误:', error.message);
    return reply.code(400).send({
      code: 10001,
      success: false,
      message: error.message,
      data: {}
    });
  }
}

export default { createTaskLogHandler, getTaskLogsHandler };